package ar.edu.utn.frba.dds.tp.code.transacciones;

import java.math.BigDecimal;
import java.util.Date;

import org.uqbar.commons.model.Entity;
import org.uqbar.commons.utils.Observable;

import uqbar.arena.persistence.annotations.PersistentClass;
import uqbar.arena.persistence.annotations.PersistentField;
import uqbar.arena.persistence.annotations.Relation;

import ar.edu.utn.frba.dds.tp.code.Asientos.AsientoDeVuelo;
import ar.edu.utn.frba.dds.tp.code.usuarios.Usuario;
import ar.edu.utn.frba.dds.tp.code.vuelos.Aerolinea;

@Observable
@PersistentClass
public class Transaccion extends Entity {
	
	private static final long serialVersionUID = 2197665128576910002L;
	
	private Date fechaSalida;
	private Aerolinea aerolinea;
	private String codigoVuelo;
	private Integer nroAsiento;
	private BigDecimal precio;
	private Usuario usuario;
	private TipoTransaccion tipo;
	private AsientoDeVuelo asiento;

	private int comprador;

	public Transaccion(AsientoDeVuelo asiento, Usuario usuario, TipoTransaccion tipo){
		this.asiento = asiento;
		this.usuario = usuario;
		this.aerolinea = asiento.getVuelo().getAerolinea();
		this.fechaSalida = asiento.getVuelo().getFechaSalida();
		this.codigoVuelo = asiento.getCodigoDeVuelo();
		this.nroAsiento = asiento.getNumeroDeAsiento();
		this.precio = asiento.getPrecio();
		this.tipo = tipo;
	}
	
	public Transaccion() {
	}

	
	// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	// +++ Persistent fields ++++++++++++++++++++++++++++++++++++++
	// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

	@PersistentField
	public BigDecimal getPrecio() {
		return precio;
	}
	
	public void setPrecio(BigDecimal precio) {
		this.precio = precio;
	}
	
	@PersistentField
	public Date getFechaSalida() {
		return fechaSalida;
	}
	
	public void setFechaSalida(Date fechaSalida) {
		this.fechaSalida = fechaSalida;
	}

	@PersistentField
	public int getComprador(){
		return this.comprador;
		
	}
	public void setComprador(int comprador) {
		this.comprador = comprador;
	}

	@PersistentField
	public TipoTransaccion getTipo() {
		return tipo;
	}

	public void setTipo(TipoTransaccion tipo) {
		this.tipo = tipo;
	}

	@Relation
	public AsientoDeVuelo getAsiento() {
		return asiento;
	}

	public void setAsiento(AsientoDeVuelo asiento) {
		this.asiento = asiento;
	}

	@Relation
	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	@PersistentField
	public String getCodigoVuelo() {
		return codigoVuelo;
	}
	
	public void setCodigoVuelo(String codigoVuelo) {
		this.codigoVuelo = codigoVuelo;
	}

	@Relation
	public Aerolinea getAerolinea() {
		return aerolinea;
	}
	
	public void setAerolinea(Aerolinea aerolinea) {
		this.aerolinea = aerolinea;
	}
	
	// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	// +++ Transient Fields +++++++++++++++++++++++++++++++++++++++
	// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	
	
	public Integer getNroAsiento() {
		return nroAsiento;
	}
	
	public void setNroAsiento(Integer nroAsiento) {
		this.nroAsiento = nroAsiento;
	}
	
	}
